package com.tedu.API.thread;

/**
 * 创建线程---第三种: 匿名内部类 【推荐使用:创建一次】
 * Lambda---JDK1.8推出新版本: 简化匿名内部类写法
 * Lambda表达式 又称函数式遍历! 功能: ①简化匿名内部类  【核心】
 *                                ②简化集合的遍历功能
 *                                ③简化功能方法
 *                                ④简化IO流
 * Lambda表达式的语法: ()->{},属于功能性接口!
 * ()->{}的各自代表:
 * () 代表: 方法中的参数   情况一: 无参数-->不可以删除
 *                      情况二: 有参数: 有一个参数-->括号删除，直接写参数名称
 *                      情况三: 有参数: 有两个以上参数-->不可删除
 * -> 代表: new 对象的过程
 * {} 代表: 方法当中的内容  情况一: 看方法返回值 void 空  直接传入输出语句，可删除{}
 *                       情况二: 看方法返回值 Java数据类型 return Java数据类型;
 *                              【两种: 八大数据类型|引用类型】
 *                               返回值  存在 return 不可以删除{}【推荐】
 *                               返回值 不存在 return 可以删除{}【不推荐】
 *                       情况三: 看方法返回值  返回值为集合  不可以删除{}
 *
 * 需求: 创建一个接口  Insert 插排   提供: 电
 *          子实现类 Computer 电脑
 *          子类实现一个接口，完成对象的创建【创建一次】
 *          匿名内部类方式完成对象创建
 *          Lambda表达式结构完成对象创建
 */
public class LambdaAPI {
    public static void main(String[] args) {
        //创建插排接口--必须使用子实现类
        /*Insert cp=new Computer();   //多态: 造型
        cp.Dian();*/
        //子实现类---创建一次对象---匿名内部类: 支持接口以及抽象类创建
        /*Insert cp=new Insert() {
            public String Dian(long money,char ch) {
               return "电脑通电了~";
            }
        };
        cp.Dian(100,'2');*/

        //使用Lambda表达式:   Insert cp= ()[方法参数]->[创建的对象]{}[输出值]
       Insert cp=(money,ch)->{return  "电脑通电了~";};
        cp.Dian(100,'2');
    }
    /**
     * Lambda表达式【简化方法】---主要针对匿名内部类【简化一个子类】【接口创建】
     * () 代表 方法中的参数    情况一: 无参数-->不可以删除
     *                      情况二: 有参数: 有一个参数-->括号删除，直接写参数名称
     *                      情况三: 有参数: 有两个以上参数-->不可删除
     * -> 代表 new 对象的过程
     * {} 代表 方法当中的内容  情况一: 看方法返回值 void 空  直接传入输出语句，可删除{}
     *                      情况二: 看方法返回值 Java数据类型 return Java数据类型;
     *                             【两种: 八大数据类型|引用类型】
     *                                  返回值  存在 return 不可以删除{}【推荐】
     *                                  返回值 不存在 return 可以删除{}【不推荐】
     *                      情况三: 看方法返回值  返回值为集合  不可以删除{}
     *
     */
}
   //①.创建插排---接口
interface Insert{
    public String Dian(long money,char ch);
   }
   //②.创建插排实现类--电脑类
/*class Computer implements  Insert{
       public void Dian() {
           System.out.println("电脑通电开机了~");
       }
   }*/